<?php
namespace Common\Common;
//分类的子集递归查询，-php开发
//                      --mysql
//                      --php
//                    -框架
//                      --TP框架
//                      --yii框架
class Tree{    
    public $tempArr = array(); //定义一个空数组，在递归方法里面接处理之后的数据
    public function reform($category,$fid=0,$num=0)
    {
        // var_dump($category);
        $num++;
        // $temp = array();
        foreach ($category as $v) {
            // var_dump($v);exit;
            if($v['fid']==$fid){
                $v['cname'] = str_repeat('——',($num-1)).$v['cname'].'('.$num.'级分类)';
                $this->tempArr[]=$v; //将$v追加进数组$tempArr中
                $this->reform($category,$v['id'],$num); //继续找一级分类下面的二级分类，此时，二级分类的$fid=一级分类的$id，也就是此时的$v['id']
            }
        }
        return $this->tempArr;
    }
}
//reform($category,$fid=0,$num=0)，传了三个参数，$category是category_test表里要查询的所有数据，$fid=0是表里的父id，二级分类的$fid=一级分类的$id，根据fid去查询分类的子集，第一次使用方法的时候，设置fid=0，对应表里fid=0，$fid是个变量，$num是分类前面的标记符号——的循环增加次数，一级分类循环增加一次，-，二级分类循环增加两次——，以示区分，str_repeat()函数是重复字符串函数，第一个参数是要重复的字符串，第二个参数是重复次数，因为递归方法会不停递归，这样一级分类前面也会被重复到——，但是一级分类前面并不需要——，这时，就($num-1)，让它少重复一次。
//$this->tempArr[]=$v;是查找一级分类，所以前面的$num要$num-1，因为一级分类前面只要一个-  $this->reform($category,$v['id'],$num);是查找二级分类，$cname前面要有多条长——区分，所以他的$num不用-1。
//第一次递归。查询表中$fid=0的一级分类，并追加到数组$tempArr中，此时以一级分类的id为二级分类的fid查找二级分类，再进行一次递归，二次递归，查找二级分类，追加进数组$tempArr中，并放在一级分类下面,如果二级分类下面还有三级分类，那么进行第三次递归，以二级分类的id作为三级分类的fid，查询三级分类自己，追加进数组$tempArr中，所有自己找出来之后，递归结束，return $this->tempArr;将最后得到的结果return回调用方法的控制器里输出。
//$num是给不同级分类前面加的——横线样式定义的变量，一级分类-，二级分类——，开始递归前，$num++;